home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Delphi Informant Complete 1995 - 2000
/
Delphi Informant Complete 1995 to 2000.iso
/
Delphi Informant Magazine Complete Works SOURCE CODE 1998.rar
/
1998
/
Jul
/
di9807jp
/
SFTPCLIENT
/
Main.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1998-02-20
|
4KB
|
191 lines
(*
Main unit developed for Delphi Informant article by John Penman, 23 January 1998
*)
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ComCtrls, Winsock2, ExtCtrls, CMsgThrd;
const
MsgPort = 2589;
type
TfrmMain = class(TForm)
gbHost: TGroupBox;
gbFileName: TGroupBox;
gbUserName: TGroupBox;
edHostName: TEdit;
edFileName: TEdit;
edUserName: TEdit;
gbPortNo: TGroupBox;
edPortNo: TEdit;
gbMessages: TGroupBox;
memStatusMsg: TMemo;
gbActions: TGroupBox;
bbtnGetFile: TBitBtn;
bbtnClose: TBitBtn;
UpDown1: TUpDown;
bbtnAbout: TBitBtn;
gbPassword: TGroupBox;
edPassword: TEdit;
bbtnLoad: TBitBtn;
GroupBox1: TGroupBox;
edTimerSetting: TEdit;
UpDown2: TUpDown;
gbMachineName: TGroupBox;
edMachineName: TEdit;
procedure FormCreate(Sender: TObject);
procedure bbtnCloseClick(Sender: TObject);
procedure bbtnGetFileClick(Sender: TObject);
procedure edPortNoEnter(Sender: TObject);
procedure bbtnAboutClick(Sender: TObject);
procedure bbtnLoadClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
Started : Boolean;
OldMsgPort : String;
TimeOutValue : Integer;
wsaData : TWSADATA;
thrdMsg : TMsgThrd;
function Start : Boolean;
end;
var
frmMain: TfrmMain;
implementation
uses About;
{$R *.DFM}
var
Request : TRequest;
// Check out Winsock 2.2 and load it if it's there ...
function TfrmMain.Start : Boolean;
var
VerReqd : WordRec;
begin
with VerReqd do
begin
Hi := 2;
Lo := 2;
end;
Result := WSAStartUp(Word(VerReqd), wsaData) = 0;
end;
// Create the main form and initialize variables ...
procedure TfrmMain.FormCreate(Sender: TObject);
begin
State := stDead;
memStatusMsg.Clear;
bbtnGetFile.Enabled := FALSE;
end;
// Cleanup and shut up shop ...
procedure TfrmMain.bbtnCloseClick(Sender: TObject);
begin
if Started then
WSACleanUp;
Close;
end;
// Attempt to start up Winsock 2.2 ...
procedure TfrmMain.bbtnGetFileClick(Sender: TObject);
var
Position : Integer;
WorkStr : String;
begin
if length(edHostName.Text) = 0 then
begin
ShowMessage('Host name is missing!');
Exit;
end;
with Request do
begin
// Check here for selected port number,
// which must NOT be the same as the message port (2589)
Position := Pos(',',edPortNo.text);
WorkStr := edPortNo.text;
delete(WorkStr,Position,1);
edPortNo.Text := WorkStr;
if StrToInt(edPortNo.text) = MsgPort then
begin
ShowMessage('Cannot select the same port number as the message port!');
edPortNo.text := OldMsgPort;
edPortNo.Refresh;
Exit;
end;
Port := edPortNo.Text;
HostName := edHostName.Text;
MachineName := edMachineName.Text;
UserName := edUserName.Text;
Password := edPassword.Text;
FileName := edFileName.Text;
end; // with Request
bbtnGetFile.Enabled := FALSE;
WorkStr := edTimerSetting.Text;
delete(WorkStr, Pos(',',WorkStr),1);
TimeOutValue := StrToInt(WorkStr);
// Create the message thread to handle messages from the SFTPServer machine ...
thrdMsg := TMsgThrd.Create(Request, TimeOutValue);
end;
// Store old port number ...
procedure TfrmMain.edPortNoEnter(Sender: TObject);
begin
OldMsgPort := edPortNo.text;
end;
// Call About ...
procedure TfrmMain.bbtnAboutClick(Sender: TObject);
begin
try
frmAbout := TfrmAbout.Create(Self);
frmAbout.ShowModal;
finally
frmAbout.Free;
end;
end;
procedure TfrmMain.bbtnLoadClick(Sender: TObject);
var
Name : array[0..127] of char;
begin
// Try to load Winsock 2 DLL ...
Started := Start;
if Started then
begin
memStatusMsg.Lines.Add('Successfully started Winsock 2.0');
bbtnGetFile.Enabled := TRUE;
bbtnLoad.Enabled := FALSE;
// Get local hostname
gethostname(@Name[0], SizeOf(Name));
edMachineName.text := String(Name);
end else
begin
ShowMessage('Failed to start Winsock 2');
Exit;
end;
end;
procedure TfrmMain.Timer1Timer(Sender: TObject);
begin
thrdMsg.Terminate;
bbtnGetFile.Enabled := TRUE;
end;
end.